﻿<?php
/**
* @version		1.0: view.html.php marum56
* @package		Joomla
*/

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die( 'Restricted access' );

jimport( 'joomla.application.component.view');

/**
 * HTML View class for the Users component
 *
 * @static
 * @package	Joomla
 * @subpackage	Akumulatory
 * @since 1.0
 */
class AkumulatoryViewAkumulatory extends JView
{
	function display($tpl = null)
	{
		global $mainframe, $option;
		$db =& JFactory::getDBO();
		
		/*
		 * Zapis/odczyt stanu strony w obiekcie klasy JRegistry,
		 * który znajduje sie w tablicy sesji.
		 */
		// Filter na wybrana kolumne
		$filter_order 		= $mainframe->getUserStateFromRequest( "$option.filter_order", 'filter_order', 'a.mo1', 'cmd' );
		// Filter na sposob sortowania: rosnacy lub malejacy
		$filter_order_Dir	= $mainframe->getUserStateFromRequest( "$option.filter_order_Dir", 'filter_order_Dir', '', 'word' );
		// Właściciel
		$filter_msw6		= $mainframe->getUserStateFromRequest( "$option.filter_msw6", 'filter_msw6', 0,'string' );
		// Spółka użytkująca
		$filter_spolka		= $mainframe->getUserStateFromRequest( "$option.filter_spolka", 'filter_spolka', '','string' );
		// Obiekt
		$filter_obiekt		= $mainframe->getUserStateFromRequest( "$option.filter_obiekt", 'filter_obiekt', '','string' );
		// Usunięte
		$filter_del		= $mainframe->getUserStateFromRequest( "$option.filter_del", 'filter_del', 0, 'int' );
		$search			= $mainframe->getUserStateFromRequest( "$option.search", 'search', '', 'string' );
		// Oczyszczamy szukaj
		if (strpos($search, '"') !== false) {
			$search = str_replace(array('=', '<'), '', $search);
		}
		$search = JString::strtolower($search);
		
		// Limit ilosci wyswietlanych wierszy na stronie - wart. domyślne pobierane z "configuration.php"
		$limit	= $mainframe->getUserStateFromRequest( 'global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int' );
		// Limit poczatkowy tzn. od ktorego wiersza tabeli sql rozpoczynamy wyswietlanie na stronie
		$limitstart = $mainframe->getUserStateFromRequest( $option.'.limitstart', 'limitstart', 0, 'int' );

		/*
		 * Filtry sortujące
		 */
		// Zapewnienie ze filter_order ma prawidlowa wartosc.
		if (!in_array($filter_order, array('a.msa1', 'a.msa2', 'a.msa3', 'a.msa4', 'b.msw6', 'c.spolka', 'd.obiekt'))) {
			$filter_order = 'a.msa2';
		}
		// Zapewnienie ze filter_order_Dir ma prawidlowa wartosc.
		if (!in_array(strtoupper($filter_order_Dir), array('ASC', 'DESC'))) {
			$filter_order_Dir = '';
		}
		$orderby = ' ORDER BY '. $filter_order .' '. $filter_order_Dir;
		
		// Tablica selekcji WHERE w SQL 
		$where = array();
		// Tablica dołączanych tabel SQL
		$inner = array();
		
		/*
		 * Tabela z akumulatorami
		 */
		$from = ' FROM #__maszyny_aku AS a';
		if (isset( $search ) && $search != '') {
			$searchEscaped = $db->Quote( '%'.$db->getEscaped( $search, true ).'%', false );
			$where[] = 'a.msa2 LIKE '.$searchEscaped;
		}
	  
		// Wyszukaj i niewyświetaj rekordów pustych 
		$where[] = 'a.msa1 = (SELECT max(msa1) 
		                              FROM #__maszyny_aku
		                              WHERE msa1 > 0 )';
		
		// Wyszukaj najmłodszych rekordów dla danego nr obiektu
		$where[] = 'a.registerDate = (SELECT max(registerDate) 
		                              FROM #__maszyny_aku
		                              WHERE gid = a.gid)';                             
		
		//Filtrowanie po typie
		if ($filter_typ) $where[] = 'a.msa2 = LOWER( '.$db->Quote($filter_typ).' ) ';

		/*
		 * Tabela z własnością
		 */
		$inner[] = ' INNER JOIN #__maszyny_wlas AS b ON b.gid = a.gid';
		// Wyszukaj najmłodszych rekordów dla danego nr obiektu
		$where[] = 'b.registerDate = (SELECT max(registerDate) 
		                              FROM #__maszyny_wlas
		                              WHERE gid = b.gid)';
		//Filtrowanie po spółce - właścicielu
		if ($filter_msw6) $where[] = 'b.msw6 = LOWER( '.$db->Quote($filter_msw6).' ) ';
		
		/*
		 * Tabela ze spółką - użytkownikiem
		 */
		$inner[] = ' INNER JOIN #__maszyny_uzytkownik AS c ON c.gid = a.gid';
		$inner[] = ' INNER JOIN #__spolka AS s ON s.gid = c.spolka';
		// Wyszukaj najmłodszych rekordów dla danego nr rejestracyjnego
		$where[] = 'c.registerDate = (SELECT max(registerDate) 
		                              FROM #__maszyny_uzytkownik
		                              WHERE gid = c.gid)';
		//Filtrowanie po spółce - użytkowniku
		if ($filter_spolka) $where[] = 's.spolka = LOWER( '.$db->Quote($filter_spolka).' ) ';
		                              
		/*
		 * Tabela z obiektem
		 */
		$inner[] = ' INNER JOIN #__maszyny_obiekt AS d ON d.gid = a.gid';
		$inner[] = ' INNER JOIN #__obiekty AS o ON o.gid = d.obiekt';
		// Wyszukaj najmłodszych rekordów dla danego nr rejestracyjnego
		$where[] = 'd.registerDate = (SELECT max(registerDate) 
		                              FROM #__maszyny_obiekt
		                              WHERE gid = d.gid)';
		//Filtrowanie po obiektach
		if ($filter_obiekt) $where[] = 'o.obiekt = LOWER( '.$db->Quote($filter_obiekt).' ) ';
		                              
		
		$where = ( count( $where ) ? ' WHERE (' . implode( ') AND (', $where ) . ')' : '' );
		$inner = ( count( $inner ) ? implode( ' ', $inner ) : '' );

		
		/*
		 * Tabela z akumulatorami
		 */	 
		$query = 'SELECT a.*, b.msw6, c.spolka, d.obiekt, o.obiekt, s.spolka'
			. $from
			. $inner
			. $where
			. ' GROUP BY a.id'
			. $orderby
		;

		//Ile rekordow do wyswietlenia.
		$db->setQuery( $query );
		$arr = $db->loadResultArray();   // Zwraca tylko jedną kolumnę i to wystarczy do obliczenia ilości wierszy
		$total = count($arr);
		jimport('joomla.html.pagination');
		$pagination = new JPagination( $total, $limitstart, $limit );
		
		// Pobierz listę rekordów do wyświetlenia.
		$db->setQuery( $query, $pagination->limitstart, $pagination->limit );
		$rows = $db->loadObjectList();
		
		/*
		 * Buduj listy select
		 */
		
		/*
		 * Lista select obiektu
		*/ 
		$lists['obiekt'] = msSelect::Obiekt('filter_obiekt', $filter_obiekt, true);
		
		/*
		 * Lista select spółka właściciel
		 */
		$lists['msw6'] 	= msSelect::Spolka('filter_msw6', $filter_msw6, true);
		
		/*
		 * Lista select spółka użytkująca
		*/
		$lists['spolka'] = msSelect::Spolka('filter_spolka', $filter_spolka, true);
		
		/*
		 * Lista select spółka użytkująca
		 		
		$query = 'SELECT DISTINCT(spolka) AS value'
			. ' FROM #__maszyny_uzytkownik'
 		;
		$db->setQuery( $query );
		$spolka[] = JHTML::_('select.option',  0, '- Wybierz spółkę/użytkownika -' );
		foreach( $db->loadObjectList() as $obj )
		{
			$spolka[] = JHTML::_('select.option',  htmlspecialchars($obj->value), $obj->text );
		}
		$lists['spolka'] 	= JHTML::_('select.genericlist', $spolka, 'filter_spolka', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', $filter_spolka);
		*/
		
		/*
		 * Lista selekt spółka użytkująca2
		 */
		$query = 'SELECT s.spolka AS value, s.spolka AS text '
			. $from
			. $inner
			. ' GROUP BY s.spolka'
			. $orderby
		;
		$lists['spolka'] = msSelect::selekt('filter_spolka', 'Wybierz społkę/użytkownika', $query, $filter_spolka, true);
		
		
		/*
		 * Lista select obiekt
		 
		
		$query = 'SELECT DISTINCT(obiekt) AS value'
			. ' FROM #__maszyny_obiekt'
 		;
		$db->setQuery( $query );
		$obiekt[] = JHTML::_('select.option',  0, '- Obiekt -' );
		foreach( $db->loadObjectList() as $obj )
		{
			$obiekt[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
		$lists['obiekt'] 	= JHTML::_('select.genericlist', $obiekt, 'filter_obiekt', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', $filter_obiekt);
		*/
		
		 /*
		 * Lista selekt obiekt
		 */
		$query = 'SELECT o.obiekt'
			. $from
			. $inner 
			. ' GROUP BY o.obiekt'
			. ' ORDER BY o.obiekt'
		;
		 $lists['obiekt'] = msSelect::selekt('filter_obiekt', 'Wybierz obiekt', $query, $filter_obiekt, true,'obiekt', 'obiekt');
		
		
		
		// Lista selekt usunietych
		$lists['del'] = msSelect::Arch($filter_del, 'Posiadane akumulatory', 'Zlikwidowane akumulatory');
				
		// table ordering
		$lists['order_Dir']	= $filter_order_Dir;
		$lists['order']		= $filter_order;

		// search filter
		$lists['search'] = $search;

		$this->assignRef('lists', $lists);
		$this->assignRef('items', $rows);
		$this->assignRef('pagination', $pagination);

		parent::display($tpl);
	}
}
